Most contemporary computer networks use the TCP/IP (Transmission Control Protocol/Internet Protocol) communications protocol. This protocol serves as the backbone of the Internet, and is the primary communications protocol for most computer systems today. Specifically, TCP/IP is a multi-layer protocol based on the ISO/OSI model. This model begins at the lowest level with a physical layer, and builds-on successively the data link layer, the network layer, the transport layer, the session layer, the presentation layer, and the application layer.
The physical layer concerns itself with the low-level details of transmitting bits over a physical medium. The data link layer takes the raw physical medium from the physical layer, and presents this medium to the network layer as an error-free medium. Thus, the data link layer handles any noise problems or other transmission errors affecting the raw physical medium, and shields the data link layer from the details of handling those problems. The data link layer also builds the bits transmitted by the physical layer into logical structures called frames or packets. The network layer receives the frames from the data link layer, and handles the issues that arise when routing the frames from source to destination, or from network to network. The transport layer on a source network node receives these frames from the network layer on that node and ensures that all of these frames are received correctly at the destination node. The session layer, presentation layer, and the application layer handle higher level details that are not germane to this application. For further details on the various layers of the ISO/OSI model, see Andrew S. Tanenbaum, Computer Networks, Second Edition, Prentice Hall (1988), section 1.4, which is hereby incorporated by reference in its entirety.
The transport layer in the ISO/OSI model discussed above assumed a perfectly functioning network layer. That is, the transport layer on a source node simply sent messages down to its network layer and assumed that those messages would be sent correctly to the destination. However, as network complexity grew and network reliability decreased, this assumption became too naxc3xafve, and the function of the transport layer had to be redesigned. This redesign of the network layer led to the development of the Transport Control Protocol (TCP). Unlike the transport layer of the ISO/OSI model, TCP does not assume a perfect network layer, and can handle and compensate for an unreliable underlying network layer.
The network layer in the ISO/OSI model has evolved into an implementation as the Internet Protocol (IP). IP operates on 64 k-byte datagrams, and transmits them throughout the Internet without regard to the reliability of the underlying network. As discussed above, network reliability issues are handled by TCP in the transport layer. Most modern networks use the transport protocol TCP in conjunction with the network protocol IP; hence the acronym TCP/IP.
As clearly appreciated from the above discussion, implementation of the TCP/IP protocol imposes significant overhead onto the processor of a network node. The processor resources devoted to supporting TCP/IP are not available to other applications running on the node that compete for those resources. Thus, the processor spends more time swapping between tasks, thereby degrading overall server throughput. Further, the bandwidth, or data-carrying capacity, of modem network channels is rapidly increasing. For example, it is not uncommon now for the server to be the bottleneck in the network, rather than the network channel. However, if more of the TCP/IP overhead can be off-loaded from the processor, the server may cease to be the network bottleneck, the performance of the server may approach the bandwidth of the network channel, and the server may improve its overall throughput. Accordingly, there is a need in the art for a protocol that minimizes the TCP/IP overhead imposed on the processor, thereby freeing the processor to devote more resources to other applications.
A network node is provided that implements a distributed TCP/IP network communication protocol stack, with the protocol stack including a TCP layer and an IP layer. The TCP layer includes a TCP management unit and a TCP data path unit, and the IP layer includes an IP management unit and an IP data path unit. The network node comprises a network host configured with the TCP management unit and the IP management unit, and at least one I/O adapter coupled to the network host and configured with the TCP data path unit and the IP data path unit, thereby distributing the TCP data path unit and the IP data path unit onto the I/O adapter.
Additional features and advantages of the present invention will become evident hereinafter.